Kelas System.Collections.Generic.HashSet<T>

Artikel ini menyediakan keterangan tambahan untuk dokumentasi referensi untuk API ini.

Kelas ini HashSet<T> menyediakan operasi set performa tinggi. Satu set adalah koleksi yang tidak berisi elemen duplikat, dan yang elemennya tidak dalam urutan tertentu.

Kapasitas HashSet<T> objek adalah jumlah elemen yang dapat ditahan objek. Kapasitas HashSet<T> objek secara otomatis meningkat saat elemen ditambahkan ke objek.

Kelas HashSet<T> ini didasarkan pada model set matematika dan menyediakan operasi set performa tinggi yang mirip dengan mengakses kunci Dictionary<TKey,TValue> atau Hashtable koleksi. Dalam istilah sederhana, HashSet<T> kelas dapat dianggap sebagai Dictionary<TKey,TValue> koleksi tanpa nilai.

Koleksi HashSet<T> tidak diurutkan dan tidak boleh berisi elemen duplikat. Jika duplikasi pesanan atau elemen lebih penting daripada performa untuk aplikasi Anda, pertimbangkan untuk menggunakan List<T> kelas bersama dengan Sort metode .

HashSet<T> menyediakan banyak operasi set matematika, seperti mengatur penambahan (union) dan mengatur pengurangan. Tabel berikut mencantumkan operasi yang disediakan HashSet<T> dan setara matematikanya.

Operasi HashSet Setara matematika
UnionWith Union atau atur penambahan
IntersectWith Persimpangan
ExceptWith Mengatur pengurangan
SymmetricExceptWith Perbedaan simetris

Selain operasi set yang tercantum, HashSet<T> kelas ini juga menyediakan metode untuk menentukan kesetaraan yang ditetapkan, tumpang tindih set, dan apakah satu set adalah subset atau superset dari set lain.

.NET Framework saja: Untuk objek yang sangat besar HashSet<T> , Anda dapat meningkatkan kapasitas maksimum menjadi 2 miliar elemen pada sistem 64-bit dengan mengatur enabled atribut <gcAllowVeryLargeObjects> elemen konfigurasi ke true di lingkungan run-time.

Kelas HashSet<T> menerapkan antarmuka ISet<T>.

Operasi set HashSet dan LINQ

LINQ menyediakan akses ke Distinctoperasi , Union, Intersect, dan Except mengatur pada sumber data apa pun yang mengimplementasikan IEnumerable antarmuka atau IQueryable . HashSet<T> menyediakan kumpulan operasi set yang lebih besar dan lebih kuat. Misalnya, HashSet<T> memberikan perbandingan seperti IsSubsetOf dan IsSupersetOf.

Perbedaan utama antara operasi set LINQ dan HashSet<T> operasi adalah bahwa operasi set LINQ selalu mengembalikan koleksi baru IEnumerable<T> , sedangkan HashSet<T> metode yang setara memodifikasi koleksi saat ini.

Biasanya, jika Anda harus membuat set baru atau jika aplikasi Anda hanya memerlukan akses ke operasi set yang disediakan, menggunakan operasi set LINQ pada koleksi atau array apa pun IEnumerable<T> akan cukup. Namun, jika aplikasi Anda memerlukan akses ke operasi set tambahan, atau jika tidak diinginkan atau perlu untuk membuat koleksi baru, gunakan HashSet<T> kelas .

Tabel berikut menunjukkan HashSet<T> operasi dan operasi set LINQ yang setara.

Operasi HashSet Setara dengan LINQ
UnionWith Union
IntersectWith Intersect
ExceptWith Except
Tidak disediakan. Distinct
SymmetricExceptWith Tidak disediakan.
Overlaps Tidak disediakan.
IsSubsetOf Tidak disediakan.
IsProperSubsetOf Tidak disediakan.
IsSupersetOf Tidak disediakan.
IsProperSupersetOf Tidak disediakan.
SetEquals Tidak disediakan.